home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the 3D Game Programming Gurus / gurus.iso / DirectX / dx9sdkcp.exe / SDK (C++) / Bin / DXUtils / Visual Studio 6.0 Wizards / Source Code / Template / d3dfile.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-11-12  |  4.1 KB  |  128 lines

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFile.h
  3. //
  4. // Desc: Support code for loading DirectX .X files.
  5. //-----------------------------------------------------------------------------
  6. #ifndef D3DFILE_H
  7. #define D3DFILE_H
  8. #include <tchar.h>
  9. #include <d3d9.h>
  10. #include <d3dx9.h>
  11.  
  12.  
  13.  
  14.  
  15.  
  16. //-----------------------------------------------------------------------------
  17. // Name: class CD3DMesh
  18. // Desc: Class for loading and rendering file-based meshes
  19. //-----------------------------------------------------------------------------
  20. class CD3DMesh
  21. {
  22. public:
  23.     TCHAR               m_strName[512];
  24.  
  25.     LPD3DXMESH          m_pSysMemMesh;    // SysMem mesh, lives through resize
  26.     LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
  27.     
  28.     DWORD               m_dwNumMaterials; // Materials for the mesh
  29.     D3DMATERIAL9*       m_pMaterials;
  30.     LPDIRECT3DTEXTURE9* m_pTextures;
  31.     bool                m_bUseMaterials;
  32.  
  33. public:
  34.     // Rendering
  35.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
  36.                     bool bDrawOpaqueSubsets = true,
  37.                     bool bDrawAlphaSubsets = true );
  38.  
  39.     // Mesh access
  40.     LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
  41.     LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
  42.  
  43.     // Rendering options
  44.     void    UseMeshMaterials( bool bFlag ) { m_bUseMaterials = bFlag; }
  45.     HRESULT SetFVF( LPDIRECT3DDEVICE9 pd3dDevice, DWORD dwFVF );
  46.  
  47.     // Initializing
  48.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
  49.     HRESULT InvalidateDeviceObjects();
  50.  
  51.     // Creation/destruction
  52.     HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strFilename );
  53.     HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, LPDIRECTXFILEDATA pFileData );
  54.     HRESULT Destroy();
  55.  
  56.     CD3DMesh( TCHAR* strName = _T("CD3DFile_Mesh") );
  57.     virtual ~CD3DMesh();
  58. };
  59.  
  60.  
  61.  
  62.  
  63. //-----------------------------------------------------------------------------
  64. // Name: class CD3DFrame
  65. // Desc: Class for loading and rendering file-based meshes
  66. //-----------------------------------------------------------------------------
  67. class CD3DFrame
  68. {
  69. public:
  70.     TCHAR      m_strName[512];
  71.     D3DXMATRIX m_mat;
  72.     CD3DMesh*  m_pMesh;
  73.  
  74.     CD3DFrame* m_pNext;
  75.     CD3DFrame* m_pChild;
  76.  
  77. public:
  78.     // Matrix access
  79.     void        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
  80.     D3DXMATRIX* GetMatrix()                   { return &m_mat; }
  81.  
  82.     CD3DMesh*   FindMesh( TCHAR* strMeshName );
  83.     CD3DFrame*  FindFrame( TCHAR* strFrameName );
  84.     bool        EnumMeshes( bool (*EnumMeshCB)(CD3DMesh*,void*), 
  85.                             void* pContext );
  86.  
  87.     HRESULT Destroy();
  88.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
  89.     HRESULT InvalidateDeviceObjects();
  90.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
  91.                     bool bDrawOpaqueSubsets = true,
  92.                     bool bDrawAlphaSubsets = true,
  93.                     D3DXMATRIX* pmatWorldMartix = NULL);
  94.     
  95.     CD3DFrame( TCHAR* strName = _T("CD3DFile_Frame") );
  96.     virtual ~CD3DFrame();
  97. };
  98.  
  99.  
  100.  
  101.  
  102. //-----------------------------------------------------------------------------
  103. // Name: class CD3DFile
  104. // Desc: Class for loading and rendering file-based meshes
  105. //-----------------------------------------------------------------------------
  106. class CD3DFile : public CD3DFrame
  107. {
  108.     HRESULT LoadMesh( LPDIRECT3DDEVICE9 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  109.                       CD3DFrame* pParentFrame );
  110.     HRESULT LoadFrame( LPDIRECT3DDEVICE9 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  111.                        CD3DFrame* pParentFrame );
  112. public:
  113.     HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strFilename );
  114.     HRESULT CreateFromResource( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strResource, TCHAR* strType );
  115.     // For pure devices, specify the world transform. If the world transform is not
  116.     // specified on pure devices, this function will fail.
  117.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, D3DXMATRIX* pmatWorldMatrix = NULL );
  118.  
  119.     CD3DFile() : CD3DFrame( _T("CD3DFile_Root") ) {}
  120. };
  121.  
  122.  
  123.  
  124. #endif
  125.  
  126.  
  127.  
  128.